﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Infrastructure.Model.UserAuth
{
    /// <summary>
    /// 系统登录信息记录实体
    /// 用于跟踪和审计用户的登录行为
    /// </summary>
    public class SysLogininfo
    {
        /// <summary>
        /// 登录记录唯一标识符
        /// 数据库自增主键（通常为BIGINT类型）
        /// </summary>
        public long InfoId { get; set; }

        /// <summary>
        /// 登录用户名（账户标识）
        /// 最大长度建议根据系统要求设置（示例：nvarchar(50)）
        /// </summary>
        public string UserName { get; set; }

        /// <summary>
        /// 登录状态
        /// 枚举值示例：Success（0）/Failed（1）/Locked（2）
        /// 建议使用枚举类型替代字符串存储
        /// </summary>
        public string Status { get; set; }

        /// <summary>
        /// 客户端IP地址
        /// 支持IPv4/IPv6格式（示例：192.168.1.1）
        /// </summary>
        public string Ipaddr { get; set; }

        /// <summary>
        /// 登录地理位置
        /// 根据IP地址解析的地理位置信息（示例：中国 北京市）
        /// </summary>
        public string LoginLocation { get; set; }

        /// <summary>
        /// 客户端浏览器信息
        /// 通过User-Agent解析的浏览器类型（示例：Chrome 114.0）
        /// </summary>
        public string Browser { get; set; }

        /// <summary>
        /// 客户端操作系统
        /// 通过User-Agent解析的操作系统（示例：Windows 10）
        /// </summary>
        public string OS { get; set; }

        /// <summary>
        /// 登录结果消息
        /// 包含成功提示或失败原因（示例："登录成功"/"密码错误"）
        /// </summary>
        public string Msg { get; set; }

        /// <summary>
        /// 登录时间戳
        /// 记录精确到毫秒级（默认值为当前服务器时间）
        /// 注意：应考虑时区存储策略（建议统一使用UTC时间）
        /// </summary>
        public DateTime LoginTime { get; set; } = DateTime.Now;
    }
}
